home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / s_to_z / tpop3 / winsock.inc < prev    next >
Text File  |  1996-09-15  |  11KB  |  401 lines

  1. { Winsock.h file for Borland Pascal
  2.   Conversion by Marc B. Manza
  3.              Center for Applied Large-Scale Computing
  4.   Requires Winsock.pas and Winsock.inc
  5.   Send any comments/change requests/etc. to:
  6.   manza@flash.poly.edu
  7. }
  8. {
  9.   Modified by Mike Caughran Cedar Island Software Nov 1994
  10.   Changed references to SOCKET to tSOCKET
  11.   added INADDR_ANY
  12.   added PInteger
  13. }
  14.  
  15. type
  16.     u_char = char;
  17.     u_short = word; { byte ?? }
  18.     u_int = word;
  19.     u_long = longint;
  20.  
  21.     tSOCKET = u_int;
  22.  
  23. const
  24.      FD_SETSIZE     =   64;
  25.  
  26. type
  27.     fd_set = record
  28.                    fd_count : u_short;
  29.                    fd_array : array[0..FD_SETSIZE-1] of tSOCKET;
  30.     end;
  31.  
  32.     timeval = record
  33.                     tv_sec, tv_usec : longint;
  34.     end;
  35.  
  36. const
  37.      IOCPARM_MASK   =   $007f;
  38.      IOC_VOID       =   $20000000;
  39.      IOC_OUT        =   $40000000;
  40.      IOC_IN         =   $80000000;
  41.      IOC_INOUT      =   (IOC_IN OR IOC_OUT);
  42.  
  43. type
  44.     PPchar = ^PChar;
  45.  
  46.     hostent = record
  47.                     h_name : PChar;
  48.                     h_aliases : PPChar;
  49.                     h_addrtype : integer;
  50.                     h_length : integer;
  51.                     h_addr_list : PPChar;
  52.                     h_addr : PChar;    
  53.     end;
  54.  
  55.     netent = record
  56.                    n_name : PChar;
  57.                    n_aliases : ^PChar;
  58.                    n_addrtype : integer;
  59.                    n_net : u_long;
  60.     end;
  61.  
  62.     servent = record
  63.                     s_name : PChar;
  64.                     s_aliases : ^PChar;
  65.                     s_port : integer;
  66.                     s_proto : PChar;
  67.     end;
  68.  
  69.     protoent = record
  70.                      p_name : PChar;
  71.                      p_aliases : ^Pchar;
  72.                      p_proto : integer;
  73.     end;
  74.  
  75. const
  76.      IPPROTO_IP     =   0;
  77.      IPPROTO_ICMP   =   1;
  78.      IPPROTO_GGP    =   2;
  79.      IPPROTO_TCP    =   6;
  80.      IPPROTO_PUP    =   12;
  81.      IPPROTO_UDP    =   17;
  82.      IPPROTO_IDP    =   22;
  83.      IPPROTO_ND     =   77;
  84.  
  85.      IPPROTO_RAW    =   255;
  86.      IPPROTO_MAX    =   256;
  87.  
  88.  
  89.      IPPORT_ECHO    =   7;
  90.      IPPORT_DISCARD =   9;
  91.      IPPORT_SYSTAT  =   11;
  92.      IPPORT_DAYTIME =   13;
  93.      IPPORT_NETSTAT =   15;
  94.      IPPORT_FTP     =   21;
  95.      IPPORT_TELNET  =   23;
  96.      IPPORT_SMTP    =   25;
  97.      IPPORT_TIMESERVER  =  37;
  98.      IPPORT_NAMESERVER  =  42;
  99.      IPPORT_WHOIS       =  43;
  100.      IPPORT_MTP         =  57;
  101.  
  102.      IPPORT_TFTP        =  69;
  103.      IPPORT_RJE         =  77;
  104.      IPPORT_FINGER      =  79;
  105.      IPPORT_TTYLINK     =  87;
  106.      IPPORT_SUPDUP      =  95;
  107.  
  108.      IPPORT_EXECSERVER  =  512;
  109.      IPPORT_LOGINSERVER =  513;
  110.      IPPORT_CMDSERVER   =  514;
  111.      IPPORT_EFSSERVER   =  520;
  112.  
  113.      IPPORT_BIFFUDP     =  512;
  114.      IPPORT_WHOSERVER   =  513;
  115.      IPPORT_ROUTESERVER =  520;
  116.  
  117.      IPPORT_RESERVED    =  1024;
  118.  
  119.      IMPLINK_IP         =  155;
  120.      IMPLINK_LOWEXPER   =  156;
  121.      IMPLINK_HIGHEXPER  =  158;
  122.  
  123. Type
  124.      SunB = record
  125.                   s_b1, s_b2, s_b3, s_b4 : u_char;
  126.  
  127.      end;
  128.  
  129.      SunW = record
  130.                   s_w1, s_w2 : u_short;
  131.      end;
  132.  
  133.      in_addr = record
  134.                  case integer of
  135.                           0 : (S_un_b : SunB);
  136.                           1 : (S_un_w : SunW);
  137.                           2 : (S_addr : u_long);
  138.      end;
  139.  
  140. var
  141.    S_un : in_addr;
  142.  
  143. type
  144.     sockaddr_in = record
  145.                         sin_family : integer;
  146.                         sin_port : u_short;
  147.                         sin_addr : in_addr;
  148.                         sin_zero : array[0..7] of char;
  149.     end;
  150.  
  151. const
  152.      WSADESCRIPTION_LEN     =   256;
  153.      WSASYS_STATUS_LEN      =   128;
  154.  
  155. type
  156.     LPWSADATA = ^WSAData;
  157.     WSAData = record
  158.                     wVersion : word;
  159.                     wHighVersion : word;
  160.                     szDescription : array[0..WSADESCRIPTION_LEN] of char;
  161.                     szSystemStatus : array[0..WSASYS_STATUS_LEN] of char;
  162.                     iMaxSockets : integer;
  163.                     iMaxUdpDg : integer;
  164.                     lpVendorInfo : PChar;
  165.     end;
  166.  
  167. const
  168.      IP_OPTIONS     =   1;
  169.      INADDR_ANY     =   0;    {msc}
  170.  
  171.      INVALID_SOCKET =   NOT(0);
  172.      SOCKET_ERROR   =   -1;
  173.  
  174.      SOCK_STREAM    =   1;
  175.      SOCK_DGRAM     =   2;
  176.      SOCK_RAW       =   3;
  177.      SOCK_RDM       =   4;
  178.      SOCK_SEQPACKET =   5;
  179.  
  180.      SO_DEBUG       =   $0001;
  181.      SO_ACCEPTCONN  =   $0002;
  182.      SO_REUSEADDR   =   $0004;
  183.      SO_KEEPALIVE   =   $0008;
  184.      SO_DONTROUTE   =   $0010;
  185.      SO_BROADCAST   =   $0020;
  186.      SO_USELOOPBACK =   $0040;
  187.      SO_LINGER      =   $0080;
  188.      SO_OOBINLINE   =   $0100;
  189.  
  190.      SO_DONTLINGER  =   $ff7f;
  191.  
  192.      SO_SNDBUF      =   $1001;
  193.      SO_RCVBUF      =   $1002;
  194.      SO_SNDLOWAT    =   $1003;
  195.      SO_RCVLOWAT    =   $1004;
  196.      SO_SNDTIMEO    =   $1005;
  197.      SO_RCVTIMEO    =   $1006;
  198.      SO_ERROR       =   $1007;
  199.      SO_TYPE        =   $1008;
  200.  
  201.      AF_UNSPEC      =   0;
  202.      AF_UNIX        =   1;
  203.      AF_INET        =   2;
  204.      AF_IMPLINK     =   3;
  205.      AF_PUP         =   4;
  206.      AF_CHAOS       =   5;
  207.      AF_NS          =   6;
  208.      AF_NBS         =   7;
  209.      AF_ECMA        =   8;
  210.      AF_DATAKIT     =   9;
  211.      AF_CCITT       =   10;
  212.      AF_SNA         =   11;
  213.      AF_DECnet      =   12;
  214.      AF_DLI         =   13;
  215.      AF_LAT         =   14;
  216.      AF_HYLINK      =   15;
  217.      AF_APPLETALK   =   16;
  218.  
  219.      AF_MAX         =   17;
  220.  
  221. type
  222.     sockaddr = record
  223.                      sa_family : u_short;
  224.                      sa_data : array[0..13] of char; { should be 0..13 ?}
  225.     end;
  226.  
  227.     sockproto = record
  228.                       sp_family : u_short;
  229.                       sp_protocol : u_short;
  230.     end;
  231.  
  232. const
  233.      PF_UNSPEC      =   AF_UNSPEC;
  234.      PF_UNIX        =   AF_UNIX;
  235.      PF_INET        =   AF_INET;
  236.      PF_IMPLINK     =   AF_IMPLINK;
  237.      PF_PUP         =   AF_PUP;
  238.      PF_CHAOS       =   AF_CHAOS;
  239.      PF_NS          =   AF_NS;
  240.      PF_NBS         =   AF_NBS;
  241.      PF_ECMA        =   AF_ECMA;
  242.      PF_DATAKIT     =   AF_DATAKIT;
  243.      PF_CCITT       =   AF_CCITT;
  244.      PF_SNA         =   AF_SNA;
  245.      PF_DECnet      =   AF_DECnet;
  246.      PF_DLI         =   AF_DLI;
  247.      PF_LAT         =   AF_LAT;
  248.      PF_HYLINK      =   AF_HYLINK;
  249.      PF_APPLETALK   =   AF_APPLETALK;
  250.  
  251.      PF_MAX         =   AF_MAX;        
  252.  
  253. type
  254.     linger = record
  255.                    l_onoff : u_short;
  256.                    l_linger : u_short;
  257.     end;
  258.  
  259. const
  260.      SOL_SOCKET     =   $ffff;
  261.  
  262.      SOMAXCONN      =   5;
  263.  
  264.      MSG_OOB        =   $1;
  265.      MSG_PEEK       =   $2;
  266.      MSG_DONTROUTE  =   $4;
  267.  
  268.      MSG_MAXIOVLEN  =   16;
  269.  
  270.      MAXGETHOSTSTRUCT   =  1024;
  271.  
  272.      FD_READ            =  $01;
  273.      FD_WRITE           =  $02;
  274.      FD_OOB             =  $04;
  275.      FD_ACCEPT          =  $08;
  276.      FD_CONNECT         =  $10;
  277.      FD_CLOSE           =  $20;
  278.  
  279.  
  280.      WSABASEERR         =  10000;
  281.  
  282.      WSAEINTR           =  (WSABASEERR + 4);
  283.      WSAEBADF           =  (WSABASEERR + 9);
  284.      WSAEFAULT          =  (WSABASEERR + 14);
  285.      WSAEINVAL          =  (WSABASEERR + 22);
  286.      WSAEMFILE          =  (WSABASEERR + 24);
  287.  
  288.      WSAEWOULDBLOCK     =  (WSABASEERR + 35);
  289.      WSAEINPROGRESS     =  (WSABASEERR + 36);
  290.      WSAEALREADY        =  (WSABASEERR + 37);
  291.      WSAENOTSOCK        =  (WSABASEERR + 38);
  292.      WSAEDESTADDRREQ    =  (WSABASEERR + 39);
  293.      WSAEMSGSIZE        =  (WSABASEERR + 40);
  294.      WSAEPROTOTYPE      =  (WSABASEERR + 41);
  295.      WSAENOPROTOOPT     =  (WSABASEERR + 42);
  296.      WSAEPROTONOSUPPORT =  (WSABASEERR + 43);
  297.      WSAESOCKTNOSUPPORT  =  (WSABASEERR + 44);
  298.      WSAEOPNOTSUPP      =  (WSABASEERR + 45);
  299.      WSAEPFNOSUPPORT    =  (WSABASEERR + 46);
  300.      WSAEAFNOSUPPORT    =  (WSABASEERR + 47);
  301.      WSAEADDRINUSE      =  (WSABASEERR + 48);
  302.      WSAEADDRNOTAVAIL   =  (WSABASEERR + 49);
  303.      WSAENETDOWN        =  (WSABASEERR + 50);
  304.      WSAENETUNREACH     =  (WSABASEERR + 51);
  305.      WSAENETRESET       =  (WSABASEERR + 52);
  306.      WSAECONNABORTED    =  (WSABASEERR + 53);
  307.      W